#ifndef _BUFFER_INTERFACE_H_
#define _BUFFER_INTERFACE_H_

#include "../virtual/Virtual.h"

/*
	class : BufferInterface
	desc : This is a pure virtual interface used for creating
	buffers that don't have a standard way of working in any way.
*/
class BufferInterface
{
	public:
		//reads a Byte from output
		virtual unsigned char readByte()=0;
		//reads a series of bytes of size length
		virtual void* read(unsigned int length)=0;
		//writes a single byte
		virtual void writeByte(unsigned char byte)=0;
		//writes a a series of bytes of size length
		virtual void write(void* data, unsigned int length)=0;
		//returns if there is any more input in the buffer to write
		virtual bool full()=0;
		//returns if there is any data to be read.
		virtual bool empty()=0;
};

#endif
